最近碰到的前端小問題,但就想記錄一下
開啟我的小筆記本模式了
在製作專案時,不論帳號註冊登入成功,還是新增建立商品,都會跳出一段訊息提醒使用者。所以我們會在controller裡面寫上
flash[:notice] = "商品新增成功!"
以菜鳥的專案為例
def create
...(略)
if @food.save
redirect_to foods_path, notice: '商品新增成功!'
else
render :edit
end
end
我們這裡redirect_to路徑之後,緊接者notice: '商品新增成功!'
這樣的寫法就等同於
flash[:notice] = "flash[:notice] = "商品新增成功!""
redirect_to foods_path
這個Flash是來快閃傳遞訊息的方法,他只會在畫面出現一次,重新整理就會立刻重畫面上消失,主要是用於redirect時,將會把文字訊息到下一個畫面。
在controller寫好Flash訊息之後,我們要將它輸出到畫面,所以會在view的html.erb裡面把訊息印出來
<%= flash[:notice] %>
就可以成功看到剛剛我們給的提示訊息的字樣了!
接下來我們要來要用Bootstrap、Css簡單加個背景,換個顏色裝飾它都好
F12打開開發者工具之後,會發現在它身上找不到任何標籤啊(囧 只有一片白白幾個字
但不用緊張,使用alert
就好
在這之前,我們要先知道Flash是一個暫時的Hash
以flash[:notice] = "商品新增成功!"為例
:notice是一個key,"商品新增成功!"則是一個value
<% flash.each do |key, value| %>
<div class="alert alert-success <%= key %>">
<%= value %>
</div>
<% end %>
訊息就可以成功顯示出來了,如果覺得Boostrap的樣式不好看,就自行CSS調整囉
其實最簡單得方式,其實就是使用Boostrap給的方法,把class加上去其實這樣就好
<div class="alert alert-success" role="alert">
<%= flash[:notice] %>
</div>
但因為我在Rails操作會有嚴重跑版問題
所以菜鳥我就用key跟value的方式去做處理畫面了
不過大家還是可以試試看喔!